package com.mytest.service.impl;

import com.mytest.mapper.AdminMapper;
import com.mytest.pojo.Admin;
import com.mytest.pojo.AdminExample;
import com.mytest.service.AdminService;
import com.mytest.utils.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @BelongsProject: java-85-course-code
 * @BelongsPackage: com.mytest.service.impl
 * @Author: LiTongMiao
 * @Date: 2022/2/1 21:23
 * @Description: 登录功能
 */
//使用service注解，把业务逻辑层的adminserviceimpl的实现交给spring
//在容器启动的时候创建adminserviceimpl的对象
@Service
public class AdminServiceImpl implements AdminService {
    //在业务逻辑层一定有一个规范，一定会有数据访问层的对象
    //为什么是mapper，因为mapper里面定义了访问数据层的方法
    @Autowired
    AdminMapper adminMapper;//这个对象我们没有new，让spring容器来new，运用了autowired，将对象的自动注入交给spring，对象创建交给spring，对象的注入交给spring

    @Override
    public Admin login(String name, String pwd) {
        //根据传入的用户或到DB中查询相应用户对象
        //如果有条件，则一定要创建AdminExample的对象，用来封装条件
        AdminExample example = new AdminExample();
        //如果查询用户对象，再进行密码对比(这里的example就形如where后面的条件)
        /**
         * 如何添加条件(不能用*号，要用列名来查)
         * select * from admin where a_name='admin'
         */
        //添加用户名条件
        example.createCriteria().andANameEqualTo(name);

        List<Admin> adminList=adminMapper.selectByExample(example);

        if(adminList.size()>0){
           Admin admin=adminList.get(0);//第一个数据就是找到的数据，用户名的唯一性（假设）
            //如果查询用户对象，进行对比密码，注意密码是密文
            /**
             *分析：
             * admin。getapass==>c893784e8r3i42j4rr83de
             *pwd==>000000
             * 在进行密码对比，要将传入的pwd进行md5加密，在于数据库中查到的对象进行密码对比
             */
            //String mipwd= MD5Util.getMD5(pwd);
            if (pwd.equals(admin.getaPass())){
                return admin;
            }
        }
        return null;

    }
}
